SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTPROC_INTE_I93]            
/*---------------------------------------------------------*/                                
/*---Empresa              : OFISIS S.A.                  --*/                                
/*---Cliente              : OFISIS                     --*/                                
/*---Sistema              : Tesoreria                    --*/                                
/*---M©dulo               : Empresa                      --*/                                
/*---Programa             : Cancelacion de Documentos x cobrar --*/                                
/*---Script               : ttproc_i.sql                 --*/                                
/*---Nombre SP            : SP_TTPROC_INTE_I93       --*/                                
/*---Desarrollado por     : Andres Soria          --*/                                
/*---Fecha Creaci©n       : 09/11/2011                   --*/                                
/*---Base Datos           : Microsoft Sql Server         --*/                                
/*---Versi©n              : 2005                         --*/                                
/*---Invoca a SP          :                              --*/                                
/*---------------------------------------------------------*/                                
/*---------------------------------------------------------*/                              
/*---Modificado 1 por     :         --*/                              
/*---Fecha Modificaci©n   :                     --*/                               
/*---Detalle Modificaci©n :         --*/                              
/*---              --*/                              
/*---------------------------------------------------------*/                                         
/*---Comentarios                                         --*/                                
/*---                                                    --*/                                
/*---                                                    --*/                                
/*---------------------------------------------------------*/                                
/*---------------------------------------------------------*/                                
/*---Drop Proc SP_TTPROC_INTE_I93                        --*/                                 
/*---Grant Execute on SP_TTPROC_INTE_I93 to public       --*/                                 
/*---                  
  Execute SP_TTPROC_INTE_I93 '01', 'OFISIS', 'CJ000001', '', '001', 2011, 10, '2011-04-01', '00600142', 'S'                          
 --*/                                
/*---------------------------------------------------------*/                     
@ISCO_EMPR    TD_VC_002 ,                    
@ISCO_USUA_MODI  TD_VC_008,                                            
@ISPA_0001   TD_VC_020 , /* Codigos de prov,bnco,caja,etc.. */                                
@ISPA_0002   TD_VC_020 , /* Numero cnta(Caso Banco u otros)  */                                
@ISPA_0003   TD_VC_020 , /* Numero Comprobantes */                                
@INPA_ANNO   INTEGER ,/* Parametro AÏo  */                                
@INPA_MESE   INTEGER ,/* Parametro Mes  */                                
@IDPA_FECH   TD_DT_001 , /* Parametro Fecha  */                                
@ISNU_ASTO   TD_VC_020,                                
@ISST_INTE   TD_VC_001                     
                    
as                    
BEGIN                    
                    
DECLARE                    
@VSCO_MONE_DEFA VARCHAR(3),                    
@VSCO_MONE_EXTR VARCHAR(3),                    
@VSCO_OPER_ACRE VARCHAR(3),                    
@VSCO_OPRC_CNTB VARCHAR(3),                    
@VSNU_AMAR VARCHAR(10),                    
@VSCO_MONE VARCHAR(3),                    
@VSCO_TIPO_OPER VARCHAR(3),                    
@VSTI_CAMB VARCHAR(3),      
@VSTI_ORIG VARCHAR(1),      
@VSSI_MVTO_CNTB VARCHAR (3) ,                
@VSCO_CLIE   VARCHAR (20),                
@VSTI_AUXI  VARCHAR (1),                
@VSNO_AUXI  VARCHAR (20)                
                    
--CREANDO LA TEMPORAL                    
CREATE TABLE #TXMVTO_CNTB(                    
 CO_EMPR VARCHAR(2) NOT NULL,                    
 NU_CNTB_EMPR INT NOT NULL,                    
 CO_UNID_CNTB VARCHAR(3) NOT NULL,                    
 CO_OPRC_CNTB VARCHAR(3) NOT NULL,                    
 NU_ANNO INT NOT NULL,                    
 NU_MESE INT NOT NULL,                    
 NU_ASTO VARCHAR(10) NOT NULL,                    
 NU_SECU INT  NULL,                    
 FE_ASTO_CNTB DATETIME NOT NULL,                    
 CO_CNTA_EMPR VARCHAR(20) NULL,                    
 TI_AUXI_EMPR VARCHAR(1) NULL,                    
 CO_AUXI_EMPR VARCHAR(20) NULL,                    
 TI_DOCU VARCHAR(3) NULL,                    
 NU_DOCU VARCHAR(50) NULL,                    
 FE_DOCU DATETIME NULL,                    
 FE_DOCU_VENC DATETIME NULL,                    
 TI_CAMB VARCHAR(3) NOT NULL,                    
 CO_MONE VARCHAR(3) NOT NULL,                    
 FA_CAMB NUMERIC (15,6) NOT NULL DEFAULT ((1000)),                    
 FA_CAMB_DIAR NUMERIC (15,6) NOT NULL,                    
 TI_OPER VARCHAR(3) NOT NULL,                    
 IM_MVTO_ORIG NUMERIC (16,4) NOT NULL DEFAULT ((0)),                    
 IM_MVTO_CNTB NUMERIC (16,4) NOT NULL DEFAULT ((0)),                    
 DE_GLOS VARCHAR(100) NOT NULL,                    
 SI_MVTO_CNTB VARCHAR(3) NOT NULL,                    
 ST_IMPR_CHEQ VARCHAR(1) NOT NULL DEFAULT ('N'),                    
 ST_GEST VARCHAR(1) NOT NULL DEFAULT ('N'),                    
 ST_REDO VARCHAR(1) NOT NULL DEFAULT ('N'),                    
 CO_TIPO_OPER VARCHAR(3) NULL,                    
 IM_MVTO_RETE NUMERIC (16,4) NULL DEFAULT ((0)),                    
 ST_IMPR_RETE VARCHAR(1) NOT NULL DEFAULT ('N'),                    
 PO_DIST NUMERIC (9,4) NOT NULL DEFAULT ((1000)),                    
 ST_CANC_DOCU VARCHAR(1) NULL DEFAULT ('N'),                    
 ST_DIFE_MAYO VARCHAR(1) NULL DEFAULT ('N'),                    
 ST_DIFE_CAMB VARCHAR(1) NULL DEFAULT ('N'),                    
 CO_USUA_CREA VARCHAR(20) NOT NULL,                    
 FE_USUA_CREA DATETIME NOT NULL,                    
 CO_USUA_MODI VARCHAR(20) NOT NULL,                    
 FE_USUA_MODI DATETIME NOT NULL,                    
 NU_CONT INT NOT NULL)                    
                    
CREATE TABLE #TTINTE_TESO                              
 (NU_SECU        INT           NULL,  NU_QUIE_REPO   INT           NULL, FE_ASTO_CNTB   DATETIME      NULL,                               
  FE_DOCU_CNTB   DATETIME      NULL,  CO_CNTA_EMPR   VARCHAR(10)   NULL, DE_CNTA_EMPR   VARCHAR(50)   NULL,                              
  TI_AUXI_EMPR   VARCHAR(1)    NULL,  CO_AUXI_EMPR   VARCHAR(20)   NULL, NO_AUXI        VARCHAR(100)  NULL,                              
  TI_DOCU        VARCHAR(03)   NULL,  NU_DOCU        VARCHAR(20)   NULL, TI_DOCU_GUIN   VARCHAR(03)   NULL,                                 
  NU_DOCU_GUIN   VARCHAR(20)   NULL,  CO_MONE        VARCHAR(03)   NULL, FA_CAMB_DIAR   NUMERIC(9,4)  NULL,                               
  TI_OPER        VARCHAR(3)    NULL,  IM_MVTO_ORIG   NUMERIC(16,4) NULL, IM_MVTO_CNTB   NUMERIC(16,4) NULL,                                
  DE_GLOS        VARCHAR(100)  NULL,  CO_ORDE_SERV   VARCHAR(20)   NULL, NU_CORR_COMP   VARCHAR(10)   NULL,                              
  CO_AUXI_DETA   VARCHAR(20)   NULL,  NO_AUXI_DETA   VARCHAR(100)  NULL)                         
                    
--Obtengo el Codigo de la Moneda                    
SELECT                     
  @VSCO_MONE_DEFA = CO_MONE_DEFA,                    
  @VSCO_MONE_EXTR = CO_MONE_EXTR,      
  @VSTI_CAMB      = TI_CAMB,      
  @VSTI_ORIG      = TI_ORIG      
                  
FROM TMPARA_TESO                    
WHERE CO_EMPR=@ISCO_EMPR                    
                  
SELECT @VSCO_TIPO_OPER = CO_TIPO_OPER, @VSCO_CLIE = CO_CLIE , @VSTI_AUXI = TI_AUXI          
FROM TCDOCU_COBR                  
WHERE CO_EMPR = @ISCO_EMPR                  
AND  NU_AMAR = @ISNU_ASTO                  
AND  FE_AMAR = @IDPA_FECH                  
AND  CO_UNID_CONC = @ISPA_0003                  
         
                
--Obtengo el tipo de Operacion contable                    
SELECT DISTINCT @VSCO_OPRC_CNTB = CO_OPRC_CNTB FROM TDTIPO_OPER WHERE CO_TIPO_OPER = @VSCO_TIPO_OPER                    
                  
                   
--Seteo el Tipo de cambio                    
--SELECT @VSTI_CAMB = 'PAC'                    
SELECT @VSSI_MVTO_CNTB = 'APR'                    
                    
--Obtenemos los registros de las facturas a pagarse de la cuenta de la 42XXX                    
                  
                
--Obtenemos los registros de las facturas a pagar CPA                    
INSERT INTO #TXMVTO_CNTB(                    
CO_EMPR ,NU_CNTB_EMPR,CO_UNID_CNTB,CO_OPRC_CNTB,                    
NU_ANNO,NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,CO_CNTA_EMPR,TI_AUXI_EMPR,CO_AUXI_EMPR,                    
TI_DOCU,NU_DOCU,FE_DOCU,FE_DOCU_VENC,TI_CAMB,CO_MONE,FA_CAMB,                    
FA_CAMB_DIAR,TI_OPER,IM_MVTO_ORIG,IM_MVTO_CNTB,DE_GLOS,SI_MVTO_CNTB,ST_IMPR_CHEQ,                    
ST_GEST,ST_REDO,CO_TIPO_OPER,ST_IMPR_RETE,                    
PO_DIST,ST_CANC_DOCU,ST_DIFE_MAYO,ST_DIFE_CAMB,CO_USUA_CREA,FE_USUA_CREA,CO_USUA_MODI,FE_USUA_MODI,                    
NU_CONT)                    
                    
 SELECT                     
 T1.CO_EMPR, 1,     T1.CO_UNID_CONC,       @VSCO_OPRC_CNTB,      MAX(YEAR(T1.FE_AMAR)),                    
 MAX(MONTH(T1.FE_AMAR)),  '00000'+RIGHT(@ISNU_ASTO,5),NULL 'NU_SECU',    MAX(T1.FE_AMAR),        MAX(T4.CO_CNTA_EMPR),                     
 CASE WHEN MAX(T5.TI_AUXI_EMPR) = 'S' THEN MAX(T2.TI_AUXI_DOCU) ELSE NULL END 'TIPO AUXILIAR',                 
 CASE WHEN MAX(T5.TI_AUXI_EMPR) = 'S' THEN MAX(T2.CO_CLIE) ELSE NULL END 'CLIENTE',                     
 CASE WHEN MAX(T5.ST_DOCU_CNTB) = 'S' THEN MAX(T2.CO_TIPO_DOCU) ELSE NULL END 'TIPO DOCUMENTO',                    
 CASE WHEN MAX(T5.ST_DOCU_CNTB) = 'S' THEN MAX(T2.NU_DOCU) ELSE NULL END 'NRO DOCUMENTO',                    
 MAX(T1.FE_EMIS),    MAX(T1.FE_VENC),   @VSTI_CAMB,       MAX(T4.CO_MONE),              
 CASE WHEN MAX(T4.CO_MONE)= @VSCO_MONE_DEFA THEN 1 ELSE       
 (CASE WHEN MAX(T4.CO_MONE)= @VSCO_MONE_EXTR THEN  MAX(T1.FA_TIPO_CAMB) ELSE MAX(T1.FA_CAMB_EXTR) END) END,     
                    
 CASE WHEN MAX(T4.CO_MONE) != @VSCO_MONE_DEFA AND MAX(T4.CO_MONE) != @VSCO_MONE_EXTR THEN MAX(T1.FA_CAMB_EXTR) ELSE MAX(T1.FA_TIPO_CAMB) END,        
 MAX(T3.TI_MOVI),   MAX(T1.IM_TOTA), CASE WHEN MAX(T4.CO_MONE) != @VSCO_MONE_DEFA THEN dbo.FN_TCFACT_CAMB_Q05(MAX(T4.CO_MONE), @VSCO_MONE_DEFA,                    
 MAX(T1.FE_AMAR), MAX(T1.IM_TOTA), @VSTI_CAMB, @VSTI_ORIG, 'N', @VSCO_MONE_DEFA, @VSCO_MONE_EXTR, MAX(T1.FA_TIPO_CAMB)) ELSE MAX(T1.IM_TOTA) END,                    
 'CANCELACION DE DOCUMENTOS NOTA CONTABLE ',@VSSI_MVTO_CNTB, 'N','N','N',@VSCO_TIPO_OPER,                    
 'N',1 ,'N','N','N',@ISCO_USUA_MODI ,GETDATE(),@ISCO_USUA_MODI, GETDATE(),1                   
 FROM TCDOCU_COBR T1, TDDOCU_COBR T2, TDTIPO_OPER T3, TMCAJA T4, TMPLAN_EMPR T5                  
 WHERE                     
 T1.CO_EMPR = @ISCO_EMPR                    
 AND T1.FE_AMAR = @IDPA_FECH                     
 AND T1.NU_AMAR = @ISNU_ASTO                     
 AND T1.CO_TIPO_OPER = @VSCO_TIPO_OPER                    
 AND T1.CO_UNID_CONC = @ISPA_0003                    
 AND T1.TI_SITU = 'ACT'                     
 AND T3.NU_CORR = 1                 
 AND T1.CO_EMPR = T2.CO_EMPR                     
 AND T1.NU_AMAR = T2.NU_AMAR                     
 AND T1.FE_AMAR = T2.FE_AMAR                     
 AND T1.CO_UNID_CONC = T2.CO_UNID_CONC        
 AND T1.CO_EMPR = T3.CO_EMPR                   
 AND T1.CO_TIPO_OPER = T3.CO_TIPO_OPER                    
 AND T1.CO_EMPR = T4.CO_EMPR                   
 And T1.CO_CAJA = T4.CO_CAJA                  
 AND T4.CO_EMPR = T5.CO_EMPR                   
 And T4.CO_CNTA_EMPR = T5.CO_CNTA_EMPR                  
GROUP BY T1.CO_EMPR, T1.FE_AMAR, T1.NU_AMAR, T1.CO_UNID_CONC        
                    
                
      
                
INSERT INTO #TXMVTO_CNTB(                    
CO_EMPR ,NU_CNTB_EMPR,CO_UNID_CNTB,CO_OPRC_CNTB,                    
NU_ANNO,NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,CO_CNTA_EMPR,TI_AUXI_EMPR,CO_AUXI_EMPR,                    
TI_DOCU,NU_DOCU,FE_DOCU,FE_DOCU_VENC,TI_CAMB,CO_MONE,FA_CAMB,                    
FA_CAMB_DIAR,TI_OPER,IM_MVTO_ORIG,IM_MVTO_CNTB,DE_GLOS,SI_MVTO_CNTB,ST_IMPR_CHEQ,                    
ST_GEST,ST_REDO,CO_TIPO_OPER,ST_IMPR_RETE,                    
PO_DIST,ST_CANC_DOCU,ST_DIFE_MAYO,ST_DIFE_CAMB,CO_USUA_CREA,FE_USUA_CREA,CO_USUA_MODI,FE_USUA_MODI,                    
NU_CONT)                    
              
SELECT                     
 T1.CO_EMPR,  1, T1.CO_UNID_CONC , @VSCO_OPRC_CNTB,  YEAR(T1.FE_AMAR),                    
 MONTH(T1.FE_AMAR), '00000'+RIGHT(@ISNU_ASTO,5), NULL 'NU_SECU',  T1.FE_AMAR,       T3.CO_CNTA_EMPR,                     
 T1.TI_AUXI,    T1.CO_CLIE,    T1.CO_TIPO_DOCU,     T1.NU_DOCU,       T1.FE_EMIS,                    
 T1.FE_VENC,   @VSTI_CAMB, T1.CO_MONE,             
 CASE WHEN T4.CO_MONE= @VSCO_MONE_DEFA THEN 1 ELSE       
 (CASE WHEN T4.CO_MONE= @VSCO_MONE_EXTR THEN  T1.FA_TIPO_CAMB ELSE T1.FA_CAMB_EXTR END) END,        
CASE WHEN T4.CO_MONE != @VSCO_MONE_DEFA AND T4.CO_MONE != @VSCO_MONE_EXTR THEN T1.FA_CAMB_EXTR ELSE T1.FA_TIPO_CAMB END,                     
 T3.TI_MOVI,    T1.IM_TOTA 'IM_MVTO_ORIG',               
 CASE WHEN T1.CO_MONE != @VSCO_MONE_DEFA THEN dbo.FN_TCFACT_CAMB_Q05(T1.CO_MONE, @VSCO_MONE_DEFA ,              
 T1.FE_AMAR, T1.IM_TOTA, @VSTI_CAMB, @VSTI_ORIG, 'N', @VSCO_MONE_DEFA, @VSCO_MONE_EXTR,T1.FA_TIPO_CAMB) ELSE T1.IM_TOTA END 'IM_MVTO_CNTB',   
'CANCELACION DE DOCUMENTOS NOTA CONTABLE ',    @VSSI_MVTO_CNTB,             
 'N',     'N',        'N',  @VSCO_TIPO_OPER,                  
 'N',       1 ,      'N',        'N',        'N',@ISCO_USUA_MODI ,GETDATE(),@ISCO_USUA_MODI, GETDATE(), 2            
 FROM TCDOCU_COBR T1            
INNER JOIN TMCAJA T4 ON            
 T4.CO_EMPR = T1.CO_EMPR            
 AND T4.CO_CAJA = T1.CO_CAJA                            
 INNER JOIN TDTIPO_OPER T3 ON                     
  T3.CO_EMPR  = T1.CO_EMPR                     
 AND T3.CO_TIPO_OPER = T1.CO_TIPO_OPER                    
 AND T3.CO_MONE  = T1.CO_MONE            
 WHERE T1.CO_EMPR = @ISCO_EMPR                    
 AND T1.FE_AMAR  = @IDPA_FECH                     
 AND T1.NU_AMAR  = @ISNU_ASTO                     
 AND T1.CO_TIPO_OPER = @VSCO_TIPO_OPER                    
 AND T1.CO_UNID_CONC  = @ISPA_0003                     
 AND T1.TI_SITU='ACT'              
              
       
            
--INSERTAMOS EN LA TXMVTO_CNTB                    
IF @ISST_INTE='S' BEGIN                    
                    
  INSERT INTO TXMVTO_CNTB (CO_EMPR ,NU_CNTB_EMPR,CO_UNID_CNTB,CO_OPRC_CNTB,                    
  NU_ANNO,NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,CO_CNTA_EMPR,TI_AUXI_EMPR,CO_AUXI_EMPR,                    
  TI_DOCU,NU_DOCU,FE_DOCU,FE_DOCU_VENC,TI_CAMB,CO_MONE,FA_CAMB,                    
  FA_CAMB_DIAR,TI_OPER,IM_MVTO_ORIG,IM_MVTO_CNTB,DE_GLOS,SI_MVTO_CNTB,ST_IMPR_CHEQ,                    
  ST_GEST,ST_REDO,CO_TIPO_OPER,ST_IMPR_RETE,                    
  PO_DIST,ST_CANC_DOCU,ST_DIFE_MAYO,ST_DIFE_CAMB,CO_USUA_CREA,FE_USUA_CREA,CO_USUA_MODI,FE_USUA_MODI)                    
                    
  SELECT                     
  CO_EMPR ,NU_CNTB_EMPR,CO_UNID_CNTB,CO_OPRC_CNTB,                    
  NU_ANNO,NU_MESE,NU_ASTO,ROW_NUMBER() OVER(ORDER BY NU_CONT) 'NU_SECU',                    
  FE_ASTO_CNTB,CO_CNTA_EMPR,TI_AUXI_EMPR,CO_AUXI_EMPR,                    
  TI_DOCU,NU_DOCU,FE_DOCU,FE_DOCU_VENC,'PAC',CO_MONE,FA_CAMB,                    
  FA_CAMB_DIAR,TI_OPER,IM_MVTO_ORIG,IM_MVTO_CNTB,DE_GLOS,SI_MVTO_CNTB,ST_IMPR_CHEQ,                    
  ST_GEST,ST_REDO,CO_TIPO_OPER,ST_IMPR_RETE,                    
  PO_DIST,ST_CANC_DOCU,ST_DIFE_MAYO,ST_DIFE_CAMB,CO_USUA_CREA,FE_USUA_CREA,CO_USUA_MODI,FE_USUA_MODI                    
  FROM #TXMVTO_CNTB                    
  ORDER BY NU_CONT                    
                    
     If @@error <> 0                      
           Begin                      
     Rollback tran                       
     Return                      
     End                      
END ELSE                    
                    
--INSERTAMOS EN LA TEMPORAL                    
 BEGIN                    
  INSERT INTO #TTINTE_TESO (NU_SECU,NU_QUIE_REPO, FE_ASTO_CNTB, FE_DOCU_CNTB, CO_CNTA_EMPR, DE_CNTA_EMPR, TI_DOCU, NU_DOCU,                              
  CO_MONE, FA_CAMB_DIAR, TI_OPER, IM_MVTO_ORIG,IM_MVTO_CNTB, DE_GLOS,CO_AUXI_EMPR, TI_AUXI_EMPR, CO_ORDE_SERV)                      
                    
  SELECT ROW_NUMBER() OVER(ORDER BY T1.NU_CONT) 'NU_SECU',1,T1.FE_ASTO_CNTB,T1.FE_DOCU,T1.CO_CNTA_EMPR,T2.DE_CNTA_EMPR,                    
        T1.TI_DOCU,T1.NU_DOCU,T1.CO_MONE,T1.FA_CAMB_DIAR,T1.TI_OPER,T1.IM_MVTO_ORIG,T1.IM_MVTO_CNTB,T1.DE_GLOS,                    
        T1.CO_AUXI_EMPR,T1.TI_AUXI_EMPR,NULL                 
  FROM #TXMVTO_CNTB T1                    
        INNER JOIN TMPLAN_EMPR T2 ON T1.CO_EMPR=T2.CO_EMPR AND T1.CO_CNTA_EMPR=T2.CO_CNTA_EMPR                    
  ORDER BY NU_CONT                    
                    
  If @@error <> 0                      
   Begin                      
   Rollback tran                       
   Return                      
  End                      
  SELECT @VSNO_AUXI = NO_AUXI FROM TMAUXI_EMPR                
  WHERE CO_EMPR = @ISCO_EMPR                
  AND  TI_AUXI_EMPR = @VSTI_AUXI                
  AND  CO_AUXI_EMPR = @VSCO_CLIE                
                
                    
        SELECT NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, DE_CNTA_EMPR, TI_DOCU, NU_DOCU,                              
  CO_MONE, FA_CAMB_DIAR, TI_OPER, IM_MVTO_ORIG,IM_MVTO_CNTB, DE_GLOS, TI_AUXI_EMPR, CO_AUXI_EMPR, @VSNO_AUXI, CO_ORDE_SERV, @ISNU_ASTO                
        FROM #TTINTE_TESO                
                
                
                
END                                  
END                    
----------------------
GO
